{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "V96fc28ZXJbn"
   },
   "source": [
    "<p align=\"center\">\n",
    "    <img src=\"https://github.com/GeostatsGuy/GeostatsPy/blob/master/TCG_color_logo.png?raw=true\" width=\"220\" height=\"240\" />\n",
    "\n",
    "</p>\n",
    "\n",
    "## Simple Convolutional Neural Network (CNN) Location Invariance Demonstration\n",
    "\n",
    "#### Michael Pyrcz, Associate Professor, University of Texas at Austin \n",
    "\n",
    "\n",
    "##### [Twitter](https://twitter.com/geostatsguy) | [GitHub](https://github.com/GeostatsGuy) | [Website](http://michaelpyrcz.com) | [GoogleScholar](https://scholar.google.com/citations?user=QVZ20eQAAAAJ&hl=en&oi=ao) | [Book](https://www.amazon.com/Geostatistical-Reservoir-Modeling-Michael-Pyrcz/dp/0199731446) | [YouTube](https://www.youtube.com/channel/UCLqEr-xV-ceHdXXXrTId5ig)  | [LinkedIn](https://www.linkedin.com/in/michael-pyrcz-61a648a1) | [GeostatsPy](https://github.com/GeostatsGuy/GeostatsPy)\n",
    "\n",
    "#### Honggeun Jo, Graduate Candidate, The University of Texas at Austin\n",
    "\n",
    "##### [LinkedIn](https://www.linkedin.com/in/honggeun-jo/?originalSubdomain=kr) | [GitHub](https://github.com/whghdrms) | [Twitter](https://twitter.com/HonggeunJ)\n",
    "\n",
    "\n",
    "### Workflow for training CNN to classify images\n",
    "\n",
    "This workflow demonstrates design and training of a CNN model to classify for a variety of synthetic labeled images.\n",
    "\n",
    "* a very simple, fast run time, well-documented toy problem to support experiential learning \n",
    "\n",
    "* we demonstrate location invariance  \n",
    "\n",
    "___\n",
    "\n",
    "**Can we train a simple CNN to detect the presence of a randomly located artifact in a set of random images with moderate spatial continuity**?\n",
    "___\n",
    "\n",
    "We design a simple network with convolution to extract features and max pooling for location invariance.\n",
    "\n",
    "### Convolutional Neural Networks\n",
    "\n",
    "Extension of the artifical neural network, based on the visual cortex:\n",
    "\n",
    "* extraction of features from overlapping receptive fields, over a hierarchy (not shown) and then recompose the whole image, our perception.\n",
    "\n",
    "* We don’t perceive all the ‘pixels’, our visual cortex interprets and summarizes patterns. Let’s make a machine to do this.\n",
    "\n",
    "**Regularization**: a constraint to reduce the sensitivity of the model to the data, to reduce model variance\n",
    "\n",
    "Receptive Fields\n",
    "\n",
    "* the use of receptive fields is a form of regularization\n",
    "\n",
    "* massive reduction in connections, weights and model parameters\n",
    "\n",
    "* effectively shrinking these potential weights to zero\n",
    "\n",
    "* while integrating / focusing on pixel patterns!\n",
    "\n",
    "We have access to operators to move from layer to layer (feature maps to feature maps) in our convolutional neural networks.  The common operators include:\n",
    "\n",
    "* **Convolution** – a weighting window / filter designed to extract features\n",
    "\n",
    "* **Pooling** – reduction in dimensionality, increase local translation invariance \n",
    "\n",
    "* **Depth-wise Pooling, Down Sampling** – 1x1 filter that combine channels, feature maps\n",
    "\n",
    "* **Activation** – use of an activation function to apply a nonlinear transformation to impart nonlinearity to the system\n",
    "\n",
    "* **Full-connected, feed forward** – see previous lecture \n",
    "\n",
    "For a demonstration of all of these operators, check out this [Python Jupyter Notebook](https://github.com/GeostatsGuy/PythonNumericalDemos/blob/master/SubsurfaceDataAnalytics_Convolution_Operators.ipynb)\n",
    "\n",
    "#### Objective \n",
    "\n",
    "Michael teaches data analytics, geostatistics and machine learning. To demonstrate the basic construction of a convolutional neural networks, training and prediction.  \n",
    "\n",
    "* Michael uses these examples in my lecture notes, see the lecture posted on my YouTube channel.\n",
    "\n",
    "* for any to gain experiential learning with the nuts and bolts of convolutional neural networks\n",
    "\n",
    "Note, we only demonstrate the basics of construction, training and prediction. There is much more about the design and training that we do not cover.\n",
    "\n",
    "#### Getting Started\n",
    "\n",
    "Here's the steps to get setup in Python with the GeostatsPy package:\n",
    "\n",
    "1. Install Anaconda 3 on your machine (https://www.anaconda.com/download/). \n",
    "2. From Anaconda Navigator (within Anaconda3 group), go to the environment tab, click on base (root) green arrow and open a terminal. \n",
    "3. In the terminal type: pip install geostatspy. \n",
    "4. Open Jupyter and in the top block get started by copy and pasting the code block below from this Jupyter Notebook to start using the geostatspy functionality. \n",
    "\n",
    "There are exampled below with these functions. You can go here to see a list of the available functions, https://git.io/fh4eX, other example workflows and source code. \n",
    "\n",
    "#### Load the required libraries\n",
    "\n",
    "The following code loads the required libraries.\n",
    "\n",
    "We will need some standard packages. These should have been installed with Anaconda 3.\n",
    "* [numpy](https://numpy.org/): To generate arrays <br>\n",
    "* [matplotlib](https://matplotlib.org/): Vilsualization purpose <br>\n",
    "* sklearn: for model metrics, confusion matrices, one hot encoder\n",
    "\n",
    "We also will need tensor flow, this will require an install as it is not available in Anaconda\n",
    "* [tensorflow > 2.0.0](https://www.tensorflow.org/learn): Design, compile and train neural network models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "executionInfo": {
     "elapsed": 189,
     "status": "ok",
     "timestamp": 1621129211466,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "ag7inwQ-XJbv"
   },
   "outputs": [],
   "source": [
    "import numpy as np                                      # ndarrays for gridded data, our images\n",
    "import matplotlib.pyplot as plt                         # plotting \n",
    "from matplotlib.ticker import (MultipleLocator, AutoMinorLocator) # control of axes ticks\n",
    "import pandas as pd\n",
    "from sklearn.metrics import f1_score, accuracy_score, recall_score, confusion_matrix # model metrics\n",
    "from scipy.ndimage import gaussian_filter               # Gaussian filter for smoothing our images\n",
    "from sklearn.preprocessing import OneHotEncoder         # one hot encoder for our response feature\n",
    "import random                                           # pseudo-random values\n",
    "\n",
    "import tensorflow as tf                                 # import tensor flow\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import layers\n",
    "from tensorflow.keras.models import Model\n",
    "\n",
    "assert tf.__version__.startswith('2.')                  # this will give you error if tensorflow < 2.0\n",
    "tf.keras.backend.set_floatx('float32')                  # default float to be 'float32' (Tensorflow only works with float8, 16, 32)\n",
    "\n",
    "physical_devices = tf.config.list_physical_devices('GPU') # constrain memory use to avoid a CUDNN_STATUS_ALLOC_FAILED error\n",
    "tf.config.experimental.set_memory_growth(physical_devices[0], True)\n",
    "\n",
    "seed = 73073                                            # set the random number seed for repeatability\n",
    "np.random.seed(seed)                                    \n",
    "\n",
    "cmap = plt.cm.inferno                                   # color map for plots\n",
    "\n",
    "tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR) # there are a lot of retrace warnings we can ignore\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gegnx7Ak1FoV"
   },
   "source": [
    "#### Check Your Hardware\n",
    "\n",
    "Let's confirm that we have access to a properly configured GPU.\n",
    "\n",
    "* you should see a 'physcial_device:GPU' device listed below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "w7PB4F9b1FoW",
    "outputId": "1cb97ff5-0aba-484a-f0e3-5ff129333c1e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.config.list_physical_devices('GPU')                  # check for a properly configured GPU"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "No worries if you don't have a configured GPU as this workflow was tested in a CPU only environment and it ran.\n",
    "\n",
    "* likely a longer run time"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KNzH3gY41FoX"
   },
   "source": [
    "#### Define Functions\n",
    "\n",
    "Let's define a couple of convenience functions for workflow brevity and read-ability\n",
    "\n",
    "* train and test accuracy over epochs performance plots\n",
    "* train and test prediction acurracy, confusion matrix plots\n",
    "* visualize the trained CNN filters\n",
    "* visualize the feature maps for a specific image classification case\n",
    "* visualize the last layer, the probability output from the softmax activation function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "executionInfo": {
     "elapsed": 583,
     "status": "ok",
     "timestamp": 1621130828337,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "di4QxA0b1FoX"
   },
   "outputs": [],
   "source": [
    "def model_performance(history,nepoch):                  # visualize error and loss, training and testing over Epochs     \n",
    "    plt.subplot(1,2,1)\n",
    "    plt.plot(history.history['loss'],c='red')\n",
    "    plt.plot(history.history['val_loss'],c='black')\n",
    "    plt.title('CNN Model Loss')\n",
    "    plt.ylabel('Testing Categorical Entropy'); plt.xlabel('Epoch'); plt.grid()\n",
    "    plt.legend(['train', 'test'], loc='upper right'); plt.xlim([0,nepoch]); plt.ylim([0,1])\n",
    "    \n",
    "    plt.subplot(1,2,2)\n",
    "    plt.plot(history.history['categorical_accuracy'],c='red')\n",
    "    plt.plot(history.history['val_categorical_accuracy'],c='black')\n",
    "    plt.title('CNN Model Accuracy')\n",
    "    plt.ylabel('Testing Proportion Correct Classification'); plt.xlabel('Epoch'); plt.grid()\n",
    "    plt.legend(['train', 'test'], loc='upper right'); plt.xlim([0,nepoch]); plt.ylim([0,1])\n",
    "    plt.subplots_adjust(left=0.0, bottom=0.0, right=2.0, top=1.1, wspace=0.3, hspace=0.3)\n",
    "    plt.show()\n",
    "    \n",
    "def model_cross_validation(model,X_train,X_test,y_train,y_test): # visualize misclassification error for training and testing data \n",
    "    y_train_predict = model.predict(X_train[:,:,:,0].reshape([ntrain,nx,ny,-1])) # predict over the training images\n",
    "    y_train_predict = np.argmax(y_train_predict,axis = 1) # assign the maximum probability category\n",
    "    \n",
    "    y_test_predict = model.predict(X_test[:,:,:,0].reshape([ntest,nx,ny,-1])) # predict over the testing images \n",
    "    y_test_predict = np.argmax(y_test_predict,axis = 1) # assign the maximum probability category\n",
    "    \n",
    "    plt.subplot(121)                                                \n",
    "    train_confusion_matrix = confusion_matrix(y_train,y_train_predict) # calculate and plot train confusion matrix\n",
    "    train_confusion_matrix = train_confusion_matrix/np.sum(train_confusion_matrix) \n",
    "    im = plt.imshow(train_confusion_matrix,cmap=cmap,vmin=0.0,vmax=1.0); plt.xlabel('Prediction'); plt.ylabel('Truth'); plt.title('Training Confusion Matrix')\n",
    "    ax = plt.gca(); ax.set_xticks([0,1]); ax.set_xticklabels(name)\n",
    "    ax.set_yticks([0,1]); ax.set_yticklabels(name)\n",
    "    cbar = plt.colorbar(im, orientation=\"vertical\", ticks=np.linspace(0, 1.0, 5))\n",
    "    cbar.set_label('Proportion', rotation=270, labelpad=20)\n",
    "    \n",
    "    plt.subplot(122)\n",
    "    test_confusion_matrix = confusion_matrix(y_test,y_test_predict) # calculate and plot train confusion matrix\n",
    "    test_confusion_matrix = test_confusion_matrix/np.sum(test_confusion_matrix) \n",
    "    im = plt.imshow(test_confusion_matrix,cmap=cmap,vmin = 0,vmax = 1.0)\n",
    "    plt.xlabel('Prediction'); plt.ylabel('Truth'); plt.title('Testing Confusion Matrix')\n",
    "    ax = plt.gca(); ax.set_xticks([0,1]); ax.set_xticklabels(name)\n",
    "    ax.set_yticks([0,1]); ax.set_yticklabels(name)\n",
    "    cbar = plt.colorbar(im, orientation=\"vertical\", ticks=np.linspace(0, 1.0, 5))\n",
    "    cbar.set_label('Proportion', rotation=270, labelpad=20)\n",
    "    \n",
    "    plt.subplots_adjust(left=0.0, bottom=0.0, right=2.0, top=1.1, wspace=0.3, hspace=0.3)\n",
    "    plt.show()\n",
    "    \n",
    "    print(f'            Train   Test')                  # print a table with train and test accuracy\n",
    "    print(f'precision: {accuracy_score(y_train.flatten(), y_train_predict):.4f}, {accuracy_score(y_test.flatten(), y_test_predict):.4f}')\n",
    "    print(f'recall:    {recall_score(y_train.flatten(), y_train_predict, average = \"weighted\"):.4f}, {recall_score(y_test.flatten(), y_test_predict, average = \"weighted\"):.4f}')\n",
    "    print(f'f1 score:  {f1_score(y_train.flatten(), y_train_predict, average = \"weighted\"):.4f}, {f1_score(y_test.flatten(), y_test_predict, average = \"weighted\"):.4f}')\n",
    "\n",
    "def visualize_filters(model):                           # visualize CNN filters\n",
    "    for layer in model.layers:\n",
    "        if 'conv' not in layer.name:                    # check if layers is a convolution\n",
    "            continue\n",
    "        filters, biases = layer.get_weights()\n",
    "        fmin, fmax = filters.min(), filters.max()       # normalize the filter weights for visualization\n",
    "        filters = (filters - fmin) / (fmax - fmin)\n",
    "        print('Convolution Layer Name: ' + layer.name + ', Shape: ' + str(filters.shape[0]) + ' x ' + str(filters.shape[1]) + ', Number of Channels: ' + str(filters.shape[3]) + '.')\n",
    "        nch = filters.shape[3]\n",
    "        for ich in range(0,nch):\n",
    "            plt.subplot(1,nch,ich+1)\n",
    "            im = plt.imshow(filters[:,:,0,ich],cmap=cmap,vmin=0.0,vmax=1.0)\n",
    "            ax = plt.gca(); ax.set_xticks([0,1,2]); ax.set_xticklabels([-1,0,1])\n",
    "            ax.set_yticks([0,1,2]); ax.set_yticklabels([-1,0,1])\n",
    "            cbar = plt.colorbar(im, orientation=\"vertical\", ticks=np.linspace(0.0, 1.0, 5))\n",
    "            cbar.set_label('Weights', rotation=270, labelpad=20)\n",
    "            plt.title('Filter ' + str(ich+1))\n",
    "        plt.subplots_adjust(left=0.0, bottom=0.0, right=0.5*nch, top=0.5, wspace=0.4, hspace=0.3)\n",
    "        plt.show()\n",
    "\n",
    "def visualize_convolution_feature_maps(model,image):    # visualize CNN feature maps for a prediction case\n",
    "    ilayer = -1\n",
    "    for layer in model.layers:\n",
    "        ilayer = ilayer + 1\n",
    "        # check for convolutional layer\n",
    "        if 'conv' not in layer.name:\n",
    "            continue\n",
    "        model_trunc = Model(inputs=model.inputs, outputs=model.layers[ilayer].output) # truncate model to output feature maps\n",
    "        feature_maps = model_trunc.predict(X[image,:,:,0].reshape([1,nx,ny,-1]))        \n",
    "        print('Convolution Layer Name: ' + layer.name + ', Shape: ' + str(feature_maps.shape[1]) + ' x ' + str(feature_maps.shape[2]) + ', Number of Channels: ' + str(feature_maps.shape[3]) + '.')\n",
    "    \n",
    "        nch = feature_maps.shape[3]\n",
    "        plt.subplot(1,nch+1,1)\n",
    "        fig = plt.imshow(X[image,:,:,0], cmap=cmap)\n",
    "        fig.axes.get_xaxis().set_visible(False); fig.axes.get_yaxis().set_visible(False)\n",
    "        plt.title('Image ' + str(image) + ': ' + name[y[image]])\n",
    "    \n",
    "        for ich in range(0,nch):\n",
    "            plt.subplot(1,nch+1,ich+2)\n",
    "            im = plt.imshow(feature_maps[0, :, :, ich], cmap=cmap)\n",
    "            ax = plt.gca(); ax.set_xticks([]); ax.set_yticks([])\n",
    "            plt.title('Convolution Feature Map ' + str(ich+1))\n",
    "        \n",
    "        plt.subplots_adjust(left=0.0, bottom=0.0, right=0.5*nch, top=0.5, wspace=0.4, hspace=0.3)\n",
    "        plt.show()\n",
    "        \n",
    "def visualize_max_pooling_feature_maps(model,image):    # visualize CNN feature maps for a prediction case\n",
    "    ilayer = -1\n",
    "    for layer in model.layers:\n",
    "        ilayer = ilayer + 1\n",
    "        # check for convolutional layer\n",
    "        if 'max_pooling' not in layer.name:\n",
    "            continue\n",
    "        model_trunc = Model(inputs=model.inputs, outputs=model.layers[ilayer].output) # truncate model to output feature maps\n",
    "        feature_maps = model_trunc.predict(X[image,:,:,0].reshape([1,nx,ny,-1]))        \n",
    "        print('Max Pooling Layer Name: ' + layer.name + ', Shape: ' + str(feature_maps.shape[1]) + ' x ' + str(feature_maps.shape[2]) + ', Number of Channels: ' + str(feature_maps.shape[3]) + '.')\n",
    "    \n",
    "        nch = feature_maps.shape[3]\n",
    "        plt.subplot(1,nch+1,1)\n",
    "        fig = plt.imshow(X[image,:,:,0], cmap=cmap)\n",
    "        fig.axes.get_xaxis().set_visible(False); fig.axes.get_yaxis().set_visible(False)\n",
    "        plt.title('Image ' + str(image) + ': ' + name[y[image]])\n",
    "    \n",
    "        for ich in range(0,nch):\n",
    "            plt.subplot(1,nch+1,ich+2)\n",
    "            im = plt.imshow(feature_maps[0, :, :, ich], cmap=cmap)\n",
    "            ax = plt.gca(); ax.set_xticks([]); ax.set_yticks([])\n",
    "            plt.title('Max Pooling Feature Map ' + str(ich+1))\n",
    "        \n",
    "        plt.subplots_adjust(left=0.0, bottom=0.0, right=0.5*nch, top=0.5, wspace=0.4, hspace=0.3)\n",
    "        plt.show()\n",
    "\n",
    "def visualize_last_layers(model, image):                # visualize last layer, category probabilities\n",
    "    ilayer = -1\n",
    "    for layer in model.layers:\n",
    "        ilayer = ilayer + 1\n",
    "        # check for convolutional layer\n",
    "        if 'dense' not in layer.name:\n",
    "            continue\n",
    "        model_trunc = Model(inputs=model.inputs, outputs=model.layers[ilayer].output) # truncate model to output feature maps\n",
    "        output_layer = model_trunc.predict(X[image,:,:,0].reshape([1,nx,ny,-1]))        \n",
    "\n",
    "        plt.subplot(1,2,1)\n",
    "        fig = plt.imshow(X[image,:,:,0], cmap=cmap)\n",
    "        fig.axes.get_xaxis().set_visible(False); fig.axes.get_yaxis().set_visible(False)\n",
    "        plt.title('Image ' + str(image) + ': ' + name[y[image]])\n",
    "\n",
    "        plt.subplot(1,2,2)\n",
    "        plt.title('Predicted Category Probabilities')\n",
    "        plt.bar(x = ['Random', 'Artifact'], height = output_layer.flatten()*100,color='red',edgecolor='black',alpha=0.2)\n",
    "        plt.xlabel('Image Categories'); plt.ylabel('Probability (\\%)')\n",
    "        plt.subplots_adjust(left=0.0, bottom=0.0, right=2.0, top=1.1, wspace=0.4, hspace=0.3)\n",
    "        plt.show()              \n",
    "        \n",
    "def visualize_testing_predictions(model):               # visualize testing images and predicted probabilities \n",
    "    y_test_predict = model.predict(X_test[:,:,:,0].reshape([ntest,nx,ny,-1])) # predict over the testing images \n",
    "    y_test_predict_cat = np.argmax(y_test_predict,axis = 1) # assign the maximum probability category\n",
    "    \n",
    "    c, r = 4, 5                                         \n",
    "    plt.figure(figsize = (10,10))\n",
    "    for i in range(c*r):\n",
    "        plt.subplot(r,c,i+1)\n",
    "        fig = plt.imshow(X_test[i,:,:,0],cmap=cmap)\n",
    "        fig.axes.get_xaxis().set_visible(False); fig.axes.get_yaxis().set_visible(False)\n",
    "        if y_test_predict_cat[i] == 0: \n",
    "            plt.title('Image ' + str(i) + ': ' + name[y_test[i,0]] + ', ' + str(np.round(y_test_predict[i,0],2)) + \"% random\" )\n",
    "        else:\n",
    "            plt.title('Image ' + str(i) + ': ' + name[y_test[i,0]] + ', ' + str(np.round(y_test_predict[i,1],2)) + \"% artifact\" )\n",
    "            \n",
    "    plt.subplots_adjust(left=0.0, bottom=0.0, right=1.3, top=1.6, wspace=0.01, hspace=0.3)\n",
    "    plt.show()\n",
    "    \n",
    "def testing_boxplot(model):                             # visualize the box plots for predicted probabilities by true category\n",
    "    y_train_predict = model.predict(X_train[:,:,:,0].reshape([ntrain,nx,ny,-1])) # predict over the testing images \n",
    "    y_test_predict = model.predict(X_test[:,:,:,0].reshape([ntest,nx,ny,-1])) # predict over the testing images \n",
    "    c = 'red'\n",
    "    box_train = plt.boxplot([y_train_predict[:,1][y_train[:,0] == 0],y_train_predict[:,1][y_train[:,0] == 1]],labels=['Train','Train'])\n",
    "    box_test = plt.boxplot([y_test_predict[:,1][y_test[:,0] == 0],y_test_predict[:,1][y_test[:,0] == 1]],positions=[1.5,2.5],labels=['Test','Test'])\n",
    "    plt.plot([1.75,1.75], [0, 1], color='k', linestyle='--', linewidth=1)\n",
    "    plt.annotate('Random Images',xy=[1.,-.15],annotation_clip=False); plt.annotate('Artifact Images',xy=[2.05,-.15],annotation_clip=False)\n",
    "    \n",
    "    plt.gca().yaxis.grid(True, which='major',linewidth = 1.0); plt.gca().yaxis.grid(True, which='minor',linewidth = 0.2) # add y grids\n",
    "    plt.gca().tick_params(which='major',length=7); plt.gca().tick_params(which='minor', length=4)\n",
    "    plt.gca().yaxis.set_minor_locator(AutoMinorLocator())\n",
    "    \n",
    "    plt.ylim([0,1]); plt.ylabel('Prediction Probability of Artifact Image')\n",
    "    plt.title('Convolutional Neural Network Image Classification Accuracy')\n",
    "    \n",
    "    plt.subplots_adjust(left=0.0, bottom=0.0, right=1.0, top=0.8, wspace=0.01, hspace=0.3)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Ew5y-AjOXJbx"
   },
   "source": [
    "### Simple Convolutional Neural Network Example\n",
    "\n",
    "Let's start with a very simple problem. \n",
    "\n",
    "* **random** and random with an 'x' **artifact** image classification\n",
    "\n",
    "#### Make a Random Simple Dataset\n",
    "\n",
    "We make 100 simple images, 80 train and 20 test 12x12 monochrome images.\n",
    "\n",
    "* we do this for a very rapid, fast toy problem\n",
    "\n",
    "We make the random training and testing images and visualize some of the testing models with their labels."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 410
    },
    "executionInfo": {
     "elapsed": 1501,
     "status": "ok",
     "timestamp": 1621130830095,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "VvCi3CUUXJbx",
    "outputId": "5478c209-9afa-41a0-cd7b-c2c9ecbfe0db"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 21 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cx = 0.6; cback = 1.3; scaled = True                    # parameters for the strength of the artifact, local multipliers\n",
    "np.random.seed(seed)                                    # make synthetic images \n",
    "random.seed(seed)\n",
    "nmodel = 100; px = 0.5; ptest = 0.2; nx = 12; ny = 12\n",
    "ntest = int(nmodel*ptest); ntrain = nmodel - ntest\n",
    "X = np.random.rand(nmodel,nx,ny,1)\n",
    "y = np.zeros(nmodel,dtype = int); name = np.array(['random','artifact'])\n",
    "X_train = np.zeros([ntrain,nx,ny,1]); y_train = np.zeros(ntrain,dtype = int)\n",
    "X_test = np.zeros([ntest,nx,ny,1]); y_test = np.zeros(ntest,dtype = int)\n",
    "\n",
    "for i in range(0,nmodel):\n",
    "    X[i,:,:,0] = gaussian_filter(X[i,:,:,0], sigma=1)\n",
    "    if np.random.rand() < px:\n",
    "        ix = random.randint(2, nx-3); iy = random.randint(2, ny-3)\n",
    "        if scaled:\n",
    "            for iiy in range(-2,3):\n",
    "                for iix in range(-2,3):\n",
    "                    X[i,ix+iix,iy+iiy,0] = cback*X[i,ix+iix,iy+iiy,0]    \n",
    "            X[i,ix,iy,0] = cx*X[i,ix,iy,0]; X[i,ix-1,iy-1,0] = cx*X[i,ix-1,iy-1,0]; X[i,ix-1,iy+1,0] = cx*X[i,ix-1,iy+1,0]; X[i,ix+1,iy-1,0] = cx*X[i,ix+1,iy-1,0]; X[i,ix+1,iy+1,0] = cx*X[i,ix+1,iy+1,0]\n",
    "            #X[i,ix-1,iy-1,0] = cback*X[i,ix-1,iy-1,0]; X[i,ix-1,iy+1,0] = cback*X[i,ix-1,iy+1,0]; X[i,ix+1,iy-1,0] = cback*X[i,ix+1,iy-1,0]; X[i,ix+1,iy+1,0] = cback*X[i,ix+1,iy+1,0]\n",
    "        else:\n",
    "            X[i,ix,iy,0] = cx; X[i,ix-1,iy,0] = cx; X[i,ix,iy-1,0] = cx; X[i,ix,iy+1,0] = cx; X[i,ix+1,iy,0] = cx\n",
    "            X[i,ix-1,iy-1,0] = cback; X[i,ix-1,iy+1,0] = cback; X[i,ix+1,iy-1,0] = cback; X[i,ix+1,iy+1,0] = cback\n",
    "        y[i] = 1\n",
    "\n",
    "X_train = X[:ntrain,:,:,:]; X_test = X[ntrain:,:,:,:]\n",
    "y_train = y[:ntrain]; y_test = y[ntrain:]\n",
    " \n",
    "y_train = y_train.reshape(ntrain,-1)  \n",
    "y_test = y_test.reshape(ntest,-1)         \n",
    "            \n",
    "c, r = 7, 3                                             # visualize labelled synthetic images\n",
    "plt.figure(figsize = (10,10))\n",
    "for i in range(c*r):\n",
    "    plt.subplot(r,c,i+1)\n",
    "    fig = plt.imshow(X[i,:,:,0],cmap=cmap)\n",
    "    fig.axes.get_xaxis().set_visible(False); fig.axes.get_yaxis().set_visible(False)\n",
    "    plt.title('Image ' + str(i) + ': ' + name[y[i]])\n",
    "\n",
    "plt.subplots_adjust(left=0.0, bottom=0.0, right=1.3, top=0.5, wspace=0.01, hspace=0.3)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "flSy63AZXJb1"
   },
   "source": [
    "#### Data Preprocessing\n",
    "\n",
    "First, we should preprocess our data. \n",
    "\n",
    "* our images have a range of [0,1] so we don't need min-max normalization \n",
    "\n",
    "* also as catetories (e.g., y_train and y_test) are non-ordinal categorical variables, we will apply one-hot-encode to make the variable more compatible with a neural network model. \n",
    "\n",
    "* should we have ordinal categories (e.g.,'first','second', and 'third'), we can just use categorical number (i.e., integer encode). Following figure presents how one-hot-encode works in our example:  \n",
    "\n",
    "| Predictor Feature Label | Predictor Feature Value | Random | Smooth |\n",
    "| :---------------------: | :---------------------: | :----: | :----: |\n",
    "| Random                  | 0                       | 1      | 0      |\n",
    "| Artifact                | 1                       | 0      | 1      |\n",
    "\n",
    "\n",
    "To learn more about integer encoding and one-hot-encoding, please refer this lecture on [feature transformations](https://www.youtube.com/playlist?list=PLG19vXLQHvSC2ZKFIkgVpI9fCjkN38kwf)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "executionInfo": {
     "elapsed": 886,
     "status": "ok",
     "timestamp": 1621130830096,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "ZZWwR58UXJb2"
   },
   "outputs": [],
   "source": [
    "enc = OneHotEncoder(categories = [[0,1]])               # 0 -> [1, 0] (Random) and 1 -> [0, 1] (Artifact)\n",
    "enc.fit(y_train)\n",
    "y_train_one_hot, y_test_one_hot = enc.transform(y_train), enc.transform(y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vjGhQSKaXJb3"
   },
   "source": [
    "#### Step 1. Define Classification Convolutional Neural Network \n",
    "\n",
    "Now we will define our convolutional neural network\n",
    "\n",
    "* with keras frontend for tensor flow it is not too dificult to design our network\n",
    "\n",
    "* the overall architure looks like this:\n",
    "\n",
    "See image from [blog post](https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53) by Sumit Saha.\n",
    "\n",
    "We cycle multiple layers of:\n",
    "\n",
    "* convolution and activation with ReLU\n",
    "\n",
    "* max pooling\n",
    "\n",
    "After multiple cycles we have learning the features in the images we then finish with:\n",
    "\n",
    "* flattening the feature into a 1D vector\n",
    "\n",
    "* feed-forward, fully-connected artificial neural network with 2 output nodes for the probability of each category\n",
    "\n",
    "As specified below the model includes:\n",
    "\n",
    "* cycles of convolution with 3x3 kernels, stride = 1 or 2 for feature maps extent reduction (one half)\n",
    "\n",
    "* feature maps transition from 12x12x1 [nx,ny,nchannel] over multiple steps to reduce featured map extent while increasing the depth and then flattens to a vector fully connected with 2 output nodes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "executionInfo": {
     "elapsed": 400,
     "status": "ok",
     "timestamp": 1621130830097,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "bYGzEarE1Foc"
   },
   "outputs": [],
   "source": [
    "def CNN_model():                                        # CNN design function\n",
    "    model = tf.keras.Sequential()                       # define neural network model sequentially\n",
    "    # Convolution Feature Map 1: (12x12x1) --> (10x10x3)\n",
    "    model.add(layers.Conv2D(3, kernel_size=(3,3), strides=1, input_shape=[nx,ny,1])) # -2 feature map extent given filter and no padding\n",
    "    model.add(layers.ReLU())\n",
    "    # Convolution Feature map 2: (10x10x3) --> (8x8x6)\n",
    "    model.add(layers.Conv2D(6, kernel_size=(3,3), strides=1)) # -2 feature map extent given filter and no padding\n",
    "    model.add(layers.ReLU())\n",
    "    # Max Pooling Feature Map 1: (8x8x3) --> (4x4x6)\n",
    "    model.add(layers.MaxPooling2D((2, 2)))              # 1/2 extent\n",
    "    # Flatten to vector layer: (4x4x6 --> (94)\n",
    "    model.add(layers.Flatten())\n",
    "    # Output layer: (94) --> 2 (i.e., each node corresponds to the probability to be each class)\n",
    "    model.add(layers.Dense(2, activation = 'softmax'))  # softmax activation function for classfier probabilities\n",
    "    # Compile the Neural Network - define Loss and optimizer to tune the associated weights\n",
    "    model.compile(loss='categorical_crossentropy', metrics=['categorical_accuracy'], optimizer='adam')\n",
    "    return model\n",
    "\n",
    "# EXAMPLES\n",
    "# model.add(layers.Conv2D(3, kernel_size=(3,3), strides=1, input_shape=[nx,ny,1], padding=\"same\")) #feature map padding\n",
    "# model.add(layers.Conv2D(3, kernel_size=(3,3), strides=2, input_shape=[nx,ny,1], padding=\"same\")) #feature map padding and extent reduction 1/2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "y7meszWgXJb4"
   },
   "source": [
    "#### Instantiate, Train the Convolutional Neural Network and Visualize the Model Performance in Training and Testing\n",
    "\n",
    "This includes the following steps:\n",
    "\n",
    "1. instantiate the CNN specified above \n",
    "\n",
    "2. train it with the 80 images in the training set\n",
    "\n",
    "3. visualize the training and testing accuracy over the Epochs of training\n",
    "\n",
    "4. write out the summary of the convolutional neural network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 831
    },
    "executionInfo": {
     "elapsed": 3622,
     "status": "ok",
     "timestamp": 1621130833784,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "u070bqWuXJb4",
    "outputId": "83745698-3699-4bef-b2fc-be0f50abf834",
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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KVEi7f6hQ+Gyy4hfv546ORXuAdi7F159FS67DCpWpMLQoZQvX96/nkzw5mUC8YsXZz4fc9Uq2LRJ8zElaJRkiogIADt37uSVV17J07Uvvvgi+/fvL+CIRESKmNhYiInJuN+MpJdfZhNQ55dfvPUuM7N8OQwZAjVrwq23ekuSfPoplC9P3bp1/U8y27SBihWJX7cu8yRT8zGPK8WxfVaSKSIiQPFsxERECo1zWSeZwLrt2wGoawYXXgiJid6B5GT47js46yxo2tTrwezfH3791Rsue+aZgFch1u/hsqGhuO7did+9m7pZJZmRkdCsWa4/phQ9xbF9Div0J4qISJF03333sWrVKlq1akXv3r2pWrUq48ePJykpiQsuuIDHH3+cffv2cckll7B+/XqSk5N5+OGH2bx5M//++y89evSgSpUqTJs2LdgfRUSk4G3ZArt3Z5lkHl0j8+GH4YEHvHU0W7WCV17xejZr1oQnnvD2V6uW4fo6deowd+5cv8PZ2qEDB77+mjplymQ8OGsWdOkCuSlAJEVWcWyflWSKiAgAzzzzDH///TeLFi3ip59+4vPPP+f333/HOUf//v2ZMWMGW7duJTo6mokTJwKwa9cuKlSowKhRo5g2bVruyvaLiBQnsbHeaxZJ5tE1Ky+5BA4ehEcfhY8+gu7dYeRIOO88CMv6T++6deuyfft29u7dS9myZXMMJ65RI+95W7akPbBpk1ftdtCgnD+TFAvFsX1WkikiUsTceeedLFq0KE/XJicnExoammF/q1atePHFF/2+z08//cRPP/1E69atAdi7dy8rVqyga9euDB8+nHvvvZd+/frRVfN9ROREkTrJzGRYa3x8PGbmLSfy0ENQr543d7JFC79unzK3Mj4+nubNm+d4fsrszbqrVqU9MGuW96p/nwMir210Vu0z5K6NLi7ts5JMERHJwDnH/fffz0033ZTh2IIFC5g0aRIPPfQQvXr14pFHHglChCIihSw2FkqUgDp1skwya9SoQYmUyrMDBuTq9rlOMtet86774w84cgRSqtrOmuWtpelLQuT4UlzaZyWZIiJFTG56HNPbs2cP5cqVy9O15cqVY8+ePQCcddZZPPzww1x55ZWULVuWDRs2EB4ezuHDh6lcuTJXXXUVFStW5M0330xzrYbLishxKzYWGjWCLHqj4uLiMq/06qeU9TX9Lf4T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vRrOPJMdO3YA5CrJrFSpEiVLlsy8JzPlPumSzAkTJtCoUSNiUmpJbN6sobIiQeRPknk98Dje4s4OmOnbJyeQkiVL0r17d7p37w5AYmIiv/3227Gkc/JkRh08CECTJk3o0r8/nU85hc5RUTTZv5+QFSu86rhLlsDXX8Odd0LnzvB//+clnFk1UiIikpXDzjlnZucBY51zb5nZDcEOSgJvxYoVAMQ0a8ZyILRTJ1q99RYL5swp8GelFP3p37//0X0piVxsbGzmSeaBA94yafXrk+CrcJ+bJNPMqF69euZJZni4NzUnVZK5b98+pk6dyi233MLR2lebNqnoj0gQZZtkmlko8KVzrkchxSPFRKlSpTIknb///jtz585l9uzZfP3117z99tsAVK5cmU6dOtGlSxc633knHSpVIuLbb+Gzz2DoUG/r2NFLOC++2JvbKSIiOdljZvfjjTA63cxCAI0NPAHELl9OWaB6y5YsB+jQgTbAu3//nf0Q1jxYt24d27ZtOzofE9Immb169cp40dq13quvsizkLskEb8hspsNlwZuXmWpO5s8//0xSUhLnnHPOsXM2b4b27XP1TBEpONkmmc65ZDM7YmYVnHO7CisoKX5KlSpFt27d6NbNG6XlnGP58uXMmTOHOXPmMHv27KPzJSIiIujatSu9r7qK3jExnLx4MSFffAHDh3tbhw7QsyeUL++t45mylSmT9n358tCggSreisiJ6lLgCuAG59wmM6sDjAhyTFIIYv/6ixjAUmosNGtG25IlGXvgACtWrMiy9kJepBT9adOmzdF90dHRlC5d+miPagaply/x9TjmNsmsUaMGy5Yty/xglSppejK/+OILypYty+mnn37sHA2XFQkqf4bL7gUWm9lkYF/KTufcHQGLSoo9M6Np06Y0bdqU66/3RlcnJCQwZ84cpk6dyuTJk7nnnnsAqFq1Kr169eLMyy6j986d1PzpJ3jmGW/JlJzUrev1fv7f/3nfWCrhFJEThHNuEzAq1ft4vDmZcpyLjY2lPXhrWScnQ2gobU45BX7/nfnz5xdokjl//nxCQ0M55ZRTju4LCQmhcePGWVeYXbPGe61fn4Tly4G8JZk///xz5gerVIENGwD4888/+eCDD7jtttsoUaKEd3zfPti7V8NlRYLInyTzS9+Wmh9//YukFRkZybnnnsu5554LwIYNG5gy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6Jz7T6FFIiJyHKpVqxZDhgxhyJAhrF+/ni+++ILx48fz8MMP8/DDD3PyySdzySWXcPnll9OgQYO8PaRECa9H88wzmXvxxXQvV86bz/nNNzBsmLe1bOn1dp53HrRtC2Y531eKuleANsBfeFNcWgBLgApmdotz7qdgBiciIicuf+ZkiohIAUhJOFN6OF944QXKli3LQw89RMOGDenQoQMvvvgiGzduzPtDQkK8qrRPPAGLF8PKlTBqFFSqBE895R2rWdPr7fzgA/j334L7gFLY/gVaO+dOdc61BVoDq4HeeFNcREREgiK7JLNXoUUhInKCqVWrFnfeeSezZ89m7dq1PPvssxw8eJChQ4dSs2ZNevXqxZtvvsmOHTvy96CGDb1KtL/8Aps3w7vvwumnw8SJMGCAl3C2aAF33unt27OnID6eFI4Y59ySlDfOuaVAU+ecxkeLiEhQZZlkOue2F2YgIiInqrp163LPPfewcOFCli5dysMPP8y6desYOHAg1apVo3///nz44Yds2bIlfw+qUsXrwfzkE28e54IF8OyzEB0Nr78O/fpB5cpeEvqf/3iJqSrWFmVLzOxVM+vm214BlppZSeBQsIMTEZETl4oDiIgUIc2aNePxxx/nscceY8GCBXz88cd88sknfPfddwC0aNGCnj170qNHD7p160alSpXy9qCQEG/Nzdat4Z574MABmD0bpkyByZPhscfAOW++Z7t20LWrl3x27gwVKhTcB5b8uBa4FbjT9342cBdegtkjOCGJiIgoyRQRKZJSlkVp27Ytzz33HH/88QfTpk3j559/Zty4cYwZMwYzo02bNvTs2ZOePXty2mmn5f2BERHQq5e3Pf007NjhJZ0zZnhrdI4cCc884yWnJ5/sJZwpiWfVqgX3wcVvzrlE4Hnflt7eQg5HRETkKCWZIiJFXEhICO3bt6d9+/bce++9JCUl8fvvvx9NOkePHs2IESMICwujZcuWDBgwgHPPPZeGDRvm/aGVKnnDZ/v1897v2we//eYlnDNmwLhxMGaMd6x5c+jRw9u6dfOG5UrAmVkX4DGgLqnac+dcHssUi4iIFAwlmSIixUzJkiXp2rUrXbt25ZFHHmH//v3MmTOHqVOn8umnnzJ06FCGDh3KSSedRP/+/enfvz/t27cnJCS7Wm85KFMGevb0NoCDB705ndOne9u778LLL3vH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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d (Conv2D)              (None, 10, 10, 3)         30        \n",
      "_________________________________________________________________\n",
      "re_lu (ReLU)                 (None, 10, 10, 3)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_1 (Conv2D)            (None, 8, 8, 6)           168       \n",
      "_________________________________________________________________\n",
      "re_lu_1 (ReLU)               (None, 8, 8, 6)           0         \n",
      "_________________________________________________________________\n",
      "max_pooling2d (MaxPooling2D) (None, 4, 4, 6)           0         \n",
      "_________________________________________________________________\n",
      "flatten (Flatten)            (None, 96)                0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                (None, 2)                 194       \n",
      "=================================================================\n",
      "Total params: 392\n",
      "Trainable params: 392\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "nepoch = 40; batch_size = 5                             # training parameters\n",
    "\n",
    "tf.random.set_seed(seed) \n",
    "model = CNN_model()                                     # instantiate model\n",
    "history = model.fit(X_train[:,:,:,0].reshape([ntrain,nx,ny,-1]), y_train_one_hot.todense(), \n",
    "                     batch_size=batch_size, epochs=nepoch, verbose=0, \n",
    "                     validation_data=(X_test[:,:,:,0].reshape([ntest,nx,ny,-1]), y_test_one_hot.todense()))\n",
    "    \n",
    "model_performance(history,nepoch)                       # plot loss and accuracy over training Epochs\n",
    "model.summary()                                         # write out the model summary"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ABYnyPTB1Foe"
   },
   "source": [
    "#### Predict with the Trained Convolutional Neural Network\n",
    "\n",
    "Now we load the trained deeper CNN classifier and visualize its prediction performance\n",
    "\n",
    "* we predict over the training and testing image datasets\n",
    "\n",
    "* we predict with the category assigned the maximum probability by our model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 451
    },
    "executionInfo": {
     "elapsed": 693,
     "status": "ok",
     "timestamp": 1621130835277,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "cmo5m_mg1Foe",
    "outputId": "a5ecf913-32d4-4dfc-ad22-b5f93e2da47a"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            Train   Test\n",
      "precision: 1.0000, 1.0000\n",
      "recall:    1.0000, 1.0000\n",
      "f1 score:  1.0000, 1.0000\n"
     ]
    }
   ],
   "source": [
    "model_cross_validation(model,X_train,X_test,y_train,y_test) # predict and cross validate CNN classifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "TCdW3Dpz1Foe"
   },
   "source": [
    "### Interogate the Trained Convolutional Neural Network\n",
    "\n",
    "#### Visualize the Convolution Filters\n",
    "\n",
    "We can access and visualize the convolution weights. The follow code:\n",
    "\n",
    "* loops over the layers and finds the convolution layers\n",
    "\n",
    "* loops over the channels and plots all of the filters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 408
    },
    "executionInfo": {
     "elapsed": 1382,
     "status": "ok",
     "timestamp": 1621130837142,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "CpD7lzFR1Foe",
    "outputId": "a81f62b1-6595-4257-e0b4-5f364cc02e21"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Convolution Layer Name: conv2d, Shape: 3 x 3, Number of Channels: 3.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Convolution Layer Name: conv2d_1, Shape: 3 x 3, Number of Channels: 6.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_filters(model)                                # visualize all of the CNN filter weights"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "eaXVG_WK1Fof"
   },
   "source": [
    "These are small 3 x 3 filters, but we can recognize some common structures:\n",
    "\n",
    "* averaging / smoothing\n",
    "\n",
    "* gradient\n",
    "\n",
    "* edge / sharpen (sobel)\n",
    "\n",
    "and combinations of these structures.\n",
    "\n",
    "* it makes sense that averaging, edge and gradient filters would differentiate the random and smooth images.\n",
    "\n",
    "#### Visualize the Convolution Feature Maps\n",
    "\n",
    "Let's visualize the feature maps after each convolution for the classification prediction problem \n",
    "\n",
    "* you can specify the image below from 0 - 99"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 383
    },
    "executionInfo": {
     "elapsed": 814,
     "status": "ok",
     "timestamp": 1621130838486,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "XnLPYab81Fof",
    "outputId": "88ec9c8a-5b15-4a2c-b7f0-2310af83ed4b"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Convolution Layer Name: conv2d, Shape: 10 x 10, Number of Channels: 3.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAACeCAYAAAD371i/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAauElEQVR4nO3de5SddX3v8c93z/2WTGZyD0m4hHCVQ2oNiljpqnpETCuo0EJFXGLLOsceV4vt8nhpi1brsrUVUY4u2yoURUQtFW/F1oOtCnpUIBSUhgRyI5kkk7lkMrc9e//OH8+zYWecmf37TibJb+D9WmvWSvbzfX7f59n79zz7u5/928/PQggCAAAAUlU40RsAAAAAzISCFQAAAEmjYAUAAEDSKFgBAACQNApWAAAAJI2CFQAAAEmjYE2UmQ2Z2an5v1vM7B4zGzCzu070tj3fmdnFZrbrKNZ/t5n93VxuE1AL/RbzFX0X0jEoWM3sKTN7xVy3O5fM7GQzC3lRWPl7X9XyvzazLWZ2yMx+YWbXHOPtuc/Mrqt+LITQHkLYlv/3DZKWSeoOIbzxKPJca2bfP4pNPSHM7Coz+0n+Ou0xs2+Z2UUnertiTHWiDSF8KIRw3XTrHEWua82sNKlff2IO2jyufSY/NveZWX3VYw35Y8fkxtFmdoWZ/dDMhs3svjlqk34bl4t+O/ucx+S9ir4bnYu+O/ucHzGznWY2aGbbzezdtdZ5vl9h7cwLw/YQwgeqHj8saZOkhZLeLOkmM7twrpNbJuY1WCvpv0IIE3O9Dakzsz+S9DFJH1JWtK+RdIuk3zqBm5Wy+6v6dHsI4e0ncmOqT4BOfZIuqfr/Jfljx8pBZf3sw3PRGP3WjX47O3P+XkXfdaPvzs7fSzozhLBA0oWSrjazy2dcI4Qwp3+SnpL0ivzf10r6gaS/ldQvaVu+YddK2ilpn6Q3V617qaQHJQ3my/98UtvXSNouqVfS+yblKkh6l6St+fIvSeqaZhtPlhQk1Ufu09ck3RAZu0jS1yXtV/Zif13SSVXL75P0wfx5GZH0eUklSaOShiR9Io8LktZJulHSuKRivvytkk6T9N18Pw/kbXRW5Vgt6av5NvRK+oSks/Icpbyd/rl+7Y9BX1qYb+sbZ4hpUnZyfTr/+5ikpnzZxZJ2Sboh72t7JL0lX3aBpL2S6qraukzS5th2q9YLktZV/f9zkv5CUlv+Gpfz/RiStFLSn0u6vSr+NyU9quwYuU/SWZOOp3dK2ixpQNKdkpqneS6ulfT9aZa9VtJDeY4fSjqvalnluDkk6TFJl+WPT9ln8m28brq8+fPxPyVtkfRkrfxTbGuQ9F5Jd1U99mVJ75EUqh57i6Sf59u9TdLvVy2rvPbvVnaMPCXp6og+d52k++i39Nv51G+r1o9+r6Lv0ndT6buSVkl6RNKfzBg32449Q+KndGTBOpHvZF3eoXZI+qSyzvmqfMfbq3b4BcqKz/Mk9Uh6Xb7s7PwFvEhSo6S/VlbEVXK9Q9IDkk7K2/60pDum2caT8xdod/4Ef1bS4mliW5QddK+uemyzpKumie+W9HpJrZI6JN0l6e6q5fflz8E5kuolNUzujJMPSP3ywbZO0ivz/Vwi6d8lfSxfVifpYWUfEtokNUu6qNbBleKfpFfn/WfaDxaS3p+/7kvz5+KHkj5Q1Z8m8pgGSa+RNCxpUb58q6RXVrV1l6R3RbZb8+Q5Vezk11PSemVXSV6Zb+OfSHpCUmPV8fRjZSfdLmUni+uneS6mfH0lbVD25nFB3j/enLdbeTN4Y95+QdKV+fasmK7Nyf11ckz+fHwn396WWvmn2N4g6Vxlx3+nsg+BPfljoSruUmUf3kzSy/PX9lcmvfZ/o+w4eXm+X2fU6HNzUbDSb+m3nTqO/TZf95feq+i79N2p8qfSd5UV7kN5/m2qurg31d/xGBLwZAjhsyGEkrJPKqslvT+EMBZCuFfZ1cN1yp6V+0IIj4QQyiGEzZLuyHdaysZx3hNC+H4IYVzSn+Y7WXG9pPeEEHaFEMaUddA3THN5/ICkFyn7qv2FygrLz0+z/Z9SVgD+S+WBEMJ5IYQvTBUcQugNIXwlhDAcQjik7GrqyyeFfS6E8GgIYSKEUJwm77RCCE+EEL6TP4f7lXWQSo6Nyg6EPw4hHA4hjIYQ5t241Vy3pANh5qEQVyvrT/vy5+JGSW+qWl7MlxdDCN9UdnCckS+7Q9LvSJKZdSg7ud4R2e5cuVLSN/LXs6jsg1iLsm8iKj4eQng6hHBQ0j2Szp+hvRebWX/V34sl/Z6kT4cQfhRCKIUQbpU0JunFkhRCuCtvvxxCuFPZp/SNR7lffxlCOBhCGKmVfxqj+b5emf99LX/sGSGEb4QQtobM9yTdK+llk9p5X36cfE/SNyRdcZT7FYN+m6HfHt9++0vvVbNA383Qd49D3w0hfFhZ/fUrkv5R2RXtaR2PgrWn6t8jkhRCmPxYuySZ2QVm9n/NbL+ZDSgrQhfncSuVDRNQ3sawsq+7K9ZK+qdKp1H2qaikbAzOEUIIQyGEn+QFY4+kt0t6VX4APcPM/krZJ4wrQghhcjtTMbNWM/t0Poh4UNnVz04zq6sK2znN6lHMbJmZfdHMduc5btezz9NqSdtrnHDmi15Ji2uMyVmpbJhIxfb8sWfamPRcDCvvb5K+IOlyM2uSdLmkn4UQKm3VaneuHJEnhFBW1j9WVcXsrfp39fZP5YEQQmfV3wPKjo0bqk+qyvrJSkkys2vM7KGqZefq2f40W9V9fMb8M7hN2TCga/J/H8HMLjGzB8zsYN7mayZtd18I4XDV/4/VazgZ/TZDvz1O/XY271XToO9m6LvHqe/mxe+DymrBG2eKTe1HV19QVtWvDiEsVPaJ0fJle5R93S8pu9WTsk+DFTslXTKp4zSHEHZH5K0c4M88H2Z2o7JBx68KIQw69uEGZZ8mLwjZYOJfqzQ5Rb7p/l/Lh/J1XpDn+N2q9ndKWjPNCedoTmQnwv3KPhW+boaYp5UdnBVr8sdqCiE8puyAukTSVcr632zaHVY2BKRieXWaGptxRB4zM2Unlph+G2unpA9OOjZaQwh3mNlaSZ9R9qGtO4TQKek/9Wx/mmr7D2v6/a2oXm/a/DW2+z8krVD2ofOIbwnyN7yvKLs6sizf7m/qyONskZm1Vf0/um8cJfrt3KDfZmbsG0fxXjUV+u7coO9mPOfcemXDDaaVWsHaIelgCGHUzDYq69AVX5a0ycwuNLNGZV/5Vz9Rn5L0wbwzyMyWmNlvTZUkv5J7hpkVzKxb0seVjVsbyJf/7zz3K0IIvVO1UWMfRiT1m1mXpD+LWKdH0qnOHEOSBsxslaQ/rlr2Y2XF/YfNrM3Mms3spVV5Tsqfv+Tlr8efSvqkmb0uv3rdkH/K+0gedoek9+av9+I8/nZHmi8oG//8a8rGU1V42n1I0lVmVmdmr9aRQ0B6JHWb2cJp1v2SpEvN7DfMrEHZB54xZeO35spnJF2f93vL+8Wl+TcKbcpOdPslyczeouzTfvX2T+4zDym7StJqZuuU/RBwtvmnlV8p2iTpN6e4atSobJzUfkkTZnaJsjHxk91oZo1m9jJlP0KY8j7G+WvXrOykWciPm4Ya+zXddtNv5wb9tna/PZr3qqm2nb47N+i7M/Rdy2qv3zezRfn2bVT2o7F/m2n7UitY/4ek95vZIWWd9UuVBSGERyX9gaQvKivIhpQNKh7LQ25SdnX23nz9B5QNOJ7KqZK+rewHX/+Zt/E7Vcs/pOyTwRP27L3VnrlHmJk9amZXT9P2x5SNhzmQb8O3I/b7JmXjbfvM7OMR8TcqG/MxoGyMyFcrC0I2VniTsnHBO5T9qOzKfPF3lf0ycq+ZHYjIc8KFED4q6Y+U/YJxv7JPjm+XdHce8heSfqLsh3CPSPpZ/lisyjjp74YQqp8TT7vvUPac9ysbh1XZNoUQfpHn2GbZVzNHfD0SQnhc2RXym5X1mU2SNoVsnPacCCH8RNLblN0tok/ZDwyuzZc9Jumjyq6s9Cj70eMPqlafqs/8rbKx5z2SbtX0479r5o/Y9kfzY3/y44ck/S9l54g+ZW/aX5sUtjdf9nS+jdfnr8dU3qTsg+b/UTYma0TZSX9W6LdHj34b1W9nfK+aDfru0aPvRvXdy/TsnRJuV/Z63DzTttnRDXc5ccysXVlnPT2E8OQJ3hwACTGzi5X9KvikGqFAMui3mK+OR99N7QrrjMxsU35JvE3ZOIpHlN2qAQAAAM9R86pgVTbTRuWmwqdL+u2j/EUkAAAAEjdvhwQAAADg+WG+XWEFAADA8wwFKwAAAJI202wWv8TMosYPFKw5us0WtdUOktRcqKsdlDOrHSNJsaMhPIMm6iJzdzbGz8ja3DRWO0jS2Hj87VUHImIHJwY1XB6J3KN0tda1hIV1M95+7gixr+HRmM1AHO9m1cUdrkdorCu54huc8ZIUgm9PiqX4Y79i68jBAyGEJe4VE7N4QSGsXeq4rhB78qvm7SbFWbzmY663Gk2M+2+BO170rTNe8m2TJDXW+SYQbO04XDuoyo7+kg4Ml+f9ObdgjaG+4KkD4mMrWp2nhcaC/3xYcp6rvPGS//BrmcU5d0Gbrx8W6sruHA/tGz/m51z/EavavaSt6eTo1s62l0TFndUaX3A0RJ7fi5GvyXg5vkstaozrsJvW7K0dlDvzlG1RcU/uXB3d5rd21L7zxK377oxuL2UL6zr01uVX1g7MtdX7D1av4izekxqcJ9zOBv/svGs6fBPlLF/Q785RdBYKew9Nd//v6V324Oe3145K39qlBf3orxz73zCLOUFKzn7S459MaeQJ36yT/TtWuHPs2L2qdlCVnQOL3DlWL+xzxW+4+H5X/EV/72s/VfWFZi1r3Rgdf3Z5vTvHi7p9Fevq1rgLP9UOOj84DRb9H64d5YUk6ZzOIXeO/77xx6745gX+HJ03bT/m51yGBAAAACBpFKwAAABIGgUrAAAAkkbBCgAAgKRRsAIAACBpFKwAAABIGgUrAAAAkua6IWJzYZFOafmNmnFd5c7oNjvrmqLiYu+ZKkmFyFtcdjXG3QBtUVN88tPa4+5ftrzzYHSbPT1Lo+I2H4iLk6THB2vv+2hpNre3BwAAmFtcYQUAAEDSZjHTFTC/1Bekrsb46ewmZnFhebzs++zXNItpAj3T+UrSyjb/bCXjzmlQ62Yxhd/YhG+Wr87mYXeO54owbBr/Wfxr0niubwpGSdIi54xPBf9MV+Wi761mcGCBO8cTB32zaZVnMY3m1r5uV/zmL13miu89+FVXfKpa1awNOjM6/sxF/mtnS5vHXfE9o/5Z4HYN+86Hl6zqdedock73u+Gcx9w5ujZuccUfenitO8fxwBVWAAAAJI2CFQAAAEmjYAUAAEDSKFgBAACQNApWAAAAJI2CFQAAAEmjYAUAAEDSKFgBAACQNNfdnBfWNei1nStqxo2V4m/I3DMSdwP13vH4m+sua4rbrRUtcW2e1BZ/4/LVC/ui4iYm4p/6A0MdUXGdjfE3Ut7QVTv/j8eimwMAADhmuMIKAACApFGwAgAAIGkUrAAAAEiaawwrMB8VFNRcV4qOP1T0HxaNhbIrfmXLqDvH4pbDrvje0VZ3jtb6oit+b3+nO8enH1/qiv+zC/7LneM5o2wqjTbFh+8acqcIO3pd8cXebneOhvYRV/xpL/upO8eKnbtc8Xu3r3Ln+M6WM13x9zzta7+vGP/7j5QtaAh6xYr43510OX5/UTFYbHDFD4z7r88tb/ad14vlOneO27YucsXfco47hS694a2u+GtO8b8/SVtmsY4PV1gBAACQNApWAAAAJI2CFQAAAEmjYAUAAEDSKFgBAACQNNfPoZvqylrXUfvXnr1jjdFtDkXO+DRajq+tF8Snj7LtUFt07PlrnoyKq6+P/wXlylVxPzVdcnn8r2THXvCSmjH/fJn/l5sAAABzjSusAAAASBoFKwAAAJJGwQoAAICkUbACAAAgaRSsAAAASJp/0nRgngmSJkL8HN2Ndb75oyVpSdOYK35Zm3/O9/GSb57qzib/fNDdzu269RenunPc+e3vuuLffOmvu3NI985infnvwINnuNfZ17PUFV8q+a9znLHxYVd84fWnu3O0D/W74k+/8Fp3jvX3vtcVX3r7Jlf84/E3eklaa0NRL1y2Jzr+iYOL3Tke7mt2xfeNB3eOF3b53gvOWbnTneOuP/iBK37wp2vdOb419FJX/PjP/8Gd403nuFdx4worAAAAkkbBCgAAgKRRsAIAACBpFKwAAABImutHVyFIoxE//Bh1DMpf0RI3qPnczvipTFe1DkfFHRiNG7T94P6m6Nxjj5wXFfeZ3s3Rbd79qydFxd12w0XRbb5z64U1YwpNj0W3BwAAcKxwhRUAAABJo2AFAABA0ihYAQAAkDQKVgAAACSNghUAAABJo2AFAABA0ihYAQAAkDTXfViB+agcTIcnat8/uKKrsejO0dUcd+/fiqLjXsUVew63u9fx+octi13xf3fN1905ml663RU/UX6XO8cXCze710mSBRUax6PDd+5c5U6xpXepK355+yF3jvr2EVf8xMLl7hyF1gWu+Cbzv/0d/IrvGPy9N9ztir/91n5XfKqKpXrtHuyMjv/FYJs7R1P8KV2SdPGyMXeOMxf1uuIbHcdqxeV/+DZX/F3vuc2d47IF97vib3ltvzvH8cAVVgAAACTN9RGzWC5oz0hjzbjmurjZqyRpQ3d/VNwZK3ZFt1mciNutf9t2elTcjtHR6NxPj1pU3IbCudFtXvHTrVFxD7z+36PbDPd8uXZM/8Ho9gAAAI4VrrACAAAgaRSsAAAASBoFKwAAAJJGwQoAAICkUbACAAAgaRSsAAAASBoFKwAAAJJGwQoAAICkUbACAAAgaa6Zrg6Xgv7fwdrzrJ/eXns2rIrzQlzcyGhzdJv7BhdGxR0YbYiKa4qbvEqSdHJr3L7fNfSv0W3+41nnR8W982tnRLf52Y2fqh1ULEW3l7I6C+pqrN1vK1a3D7pzdDTHz4YmST2HfPOeS1L/eFx/rYifb+5Zb1zrmyf+utte485x+PEnXPGfPOM/3DmeK6y5pKb1A9Hxq7fvdufoXtTniu9a1ePOUb/Wd3zUP/Av7hz7v3maK3546JPuHP0DJ7vib7l7vSt+R/8XXfHPFae0j7jXOat7vy/H6p3uHH19nb74gbjao9q7Nuxwxd/8md915/jDc/e44juW9bpzHA9cYQUAAEDSKFgBAACQNApWAAAAJI2CFQAAAEmjYAUAAEDSKFgBAACQNApWAAAAJI2CFQAAAEmjYAUAAEDSKFgBAACQNNfUrKVQ1mCoPcVeOcRPzbp3uC0qbsdQR3Sb+yKnXB2aiJtz1TPV7NvOfTwq7sOnxU97uvD8L0fFXXL22ug2Q/262kEt26LbAwAAOFa4wgoAAICkua6wAvNRnQW1NxSj41scsRWjxfir8JI04IyfjaFinXud+/cvdMW/bf1ed47rX7LeFX/TVV9353jHFvcqaSqaSnvi+0rb4j53iiUbf+6Kt1MXuXOofrErvPxorzvFDzb/N1f8Awc63Tk++vQtrvjzW337PVyecMWnaqxU0JOH2qPj17Qdduc4abnv3DM22uTOsXn3Glf8PTvjvwmuuHPA16eWtm105+jb8aQr/uotV7hzSB+fxTo+XGEFAABA0ihYAQAAkDQKVgAAACSNghUAAABJo2AFAABA0ihYAQAAkDQKVgAAACTNdR/W1ro6nde2oGbc2QvHo9tsKJSj4p44FH8Ptf1jcTNYtUTeprLBUdb/aFfcbFPFifinfu143MxdHbv3Rbc51l/7fnGlgyG6PQAAgGOFK6wAAABIGgUrAAAAkkbBCgAAgKS5xrAC81FZphHHmOG9Q/75oA9PxI0zrhguRQ6grtJQ8I0p3tDtn1fe69QVe9zrfOScx1zx9S2j7hzPFcXhZu17aH10fFPbiDtH26K4Mf8V5c4ud47CYL8vflHJneNX1z/uil+xYLk7x8lt17niD0/4jvObd/vPCykaK5u2DsWfczsa4n+jUrF112pXfP9IiztH35hvu96yvsed4wMrXuyKX3Phw+4cdet8pV551ffcOT73EvcqblxhBQAAQNIoWAEAAJA0ClYAAAAkjYIVAAAASaNgBQAAQNIoWAEAAJA0170OCiZ1RNy9p6V+IrrN0cjb+wyX4m+9MlqKu/1PZJha6uJzDxbjntLB0dboNkvFuFsmTQw3R7c5OlD71k2hxOcZAABw4lGRAAAAIGkUrAAAAEgaBSsAAACSRsEKAACApFGwAgAAIGmuuwQA85EpqKFQjo4fL8fduaJaKcTfSUKSmhzbM1uHio3udbqbR1zxfQML3DkmJnzPb/+BLncO6elZrJMeK5TV0DwWHd/Y5nv9JEljvr5Y6JnFczvo265yn/8Y7Ojud8W3z6LvdjeNuuJLocUVX/CdRpLVWlfW+Yvin6uTOwbcOcad55HZnA/bHHc8kqSe4TZ3joPb1rni9/Yuduc4afleV/ziU3a7cxwPXGEFAABA0ihYAQAAkDQKVgAAACTNN4Y1xM0OFTt7lSSFyLF/q1pL0W12NcbV4bEjt7obi9G5OyNjDwzHz3S19am1UXHdBzuj2zSr/UKWnGOEAAAAjgWusAIAACBpFKwAAABIGgUrAAAAkkbBCgAAgKRRsAIAACBpFKwAAABIGgUrAAAAkua7DyswDwWZypH3+5Xi789brS7ivrbVGgr+LPXOdVrr4+8fXFFnvhzjJf8p5NBh33zbQc+RCdZnwQpBjW0j0fFjQ/H3d64Y+d6ZrvgQ/Nc5rC7+PtqSVBpvcOfwWrqix71Oe9thV/zeA0tc8a17x13xqaqzoIWN8fvS0uA/V+0d6nDF7xhuduc4POHr62Xf24AkaWnzhCt+1YIBd46Orn5XfNPyXneO44ErrAAAAEgaBSsAAACS5vo+L0gqRnxjOOKY0rOjIe5y+IuWHIxus71pNCqufyTu6zPP18lD441RcU85vhZ9cigu9pTBhdFtnrNyV82Y5/NXsQAAIB1cYQUAAEDSKFgBAACQNApWAAAAJI2CFQAAAEmjYAUAAEDSKFgBAACQNApWAAAAJI2CFQAAAEmjYAUAAEDSLIQQH2y2X9L2Y7c5SMzaEMKSE70RR4t++7xE38V8RL/FfHXM+66rYAUAAACON4YEAAAAIGkUrAAAAEgaBSsAAACSRsEKAACApFGwAgAAIGkUrAAAAEgaBSsAAACSRsEKAACApFGwAgAAIGn/HxxGvo90DRzPAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Convolution Layer Name: conv2d_1, Shape: 8 x 8, Number of Channels: 6.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 7 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "image = 52                                              # selected prediction case image from 0 - 99\n",
    "visualize_convolution_feature_maps(model, image)        # function to visualize the convolution feature maps"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "These feature maps in each layer demonstrate the extraction of information from the original images:\n",
    "\n",
    "* note the identification of the artifact over each convolution filter.\n",
    "\n",
    "#### Visualize the Max Pooling Feature Maps\n",
    "\n",
    "Let's visualize the feature maps after max pooling operations for our classification prediction problem.\n",
    "\n",
    "* you can specify the image below from 0 - 99"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max Pooling Layer Name: max_pooling2d, Shape: 4 x 4, Number of Channels: 6.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABS4AAACrCAYAAABokwIeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAaeklEQVR4nO3de7Rkd1Un8O/uZ9IPupMYIe9gCAgEDI7yUBxheAhKxAcDjLoEFdcMjDrO+ERFI4OMa2ApCCO+eT9lRAEddcQVmTAoykSDKAghT0I65NFJOunudPf9zR/n3E7l0rdvnc69t076fj5r3dVddXb9frtO/XbVvbtOnarWWgAAAAAAxmTdrBMAAAAAAFhI4xIAAAAAGB2NSwAAAABgdDQuAQAAAIDR0bgEAAAAAEZH4xIAAAAAGB2Ny/uhqtpTVV/R///EqvpAVd1WVb8/69yYnaq6qqqe2v//Z6rqd2adE6wmNcBapwZY69QAa50aYK1TA8enVW1cTi6isaqqc6uq9c3B+Z+XTWx/dVV9pqruqKpPVdX3rnA+l1TViyava61ta619rr/4nCQPTHJKa+3f3od5XlhVl96HVO+3+nV5d1V92YLrL+vXwrnLPN/CNXZVVf30cs7RWntla+1FS0cO1+d+50T+u5dpzIcsQ3rTzvemfs5nL7j+V/vrX7gCc55WVe+vqutXYl3dF2pgGDVwzHN+S1VdWlW7q+qGqvqdqtq+3PMcCzUwjBo45jmfXFWf6Gvg5qp6X1WdsdzzHAs1MIwaWJb5f2+17/PRqIFh1MAxz/mkqpqre/caXrDc8xwLNTCMGrhP855aVe+o7uC7W6vq7UvdxhGXi9vZNwi3tdb+68T1dya5KMmOJC9I8tqq+rrlnrw60zw+5yT5l9baweXOYY25Msm/m79QVY9KsmWF59zZWtvWz/vzVfWMFZ5vOX3VRH3snHUyVbX+GG72L0kOv/FQVRuSPDfJFcuV1wJzSf40yXeu0Pj3lRoYRg0MtyPJK5KcnuThSc5I8qoVmutYqIFh1MBw/5Tkm/r9dXqSzyR5wwrNdSzUwDBq4BhV1ROTnLeScxwjNTCMGjg210/st22ttTev4FxDqYFh1MCx+YMkNyQ5O8mXJ3n1UjeYWeOyuiP8PtJ3c3dX1eeq6uv666+tqhsn332o7kiNy6rq9n77xQvG+96qurq6d7BfVvc+RHhdVf10VV3Rb39PVZ18LHm31n6htfap1tpca+1vkvyfJE+Y8j6fVFUfrKov9p3lD1bVmRPbL6mqX6qqjyS5K8lbk3xDktf3XfzX93Gtqh5SVb+Y5OeTPK/f/gNVdV5V/WV/P2+qqrdX1c6JOc6qqj/oc7i5ql5fVQ9P8htJnrBc7xbcD701EwWbrin9lsmAo63BqnpeVV1ZVQ/oLz+zuiOKTl1q4tbaR5N8MskF/Vr9uX4t31hVb6mqHRPzfGtVfbKvmUv6x+5LVNXFVfW2/v/z72a9oKqu6dfFz07EnlhVb+7X5D9X1U9W1XXT7LQFc55eVf+zX1tXVtWPTGx7bFV9tM/7C/2629Rv+3Af9g/9+nteHeEI4Jp4B6q6d4feUFV/UlV3Jnny0eZfxAeSPLGqTuovPyPJ5emeROfnXKqerqqql1bVP/X7741VdcKRJmut7Wqt/XqSv51id86CGlADK10D72it/Wlr7a7W2q1JfjvJ1y+9Z1eNGlADq/E6cP3EVYeSjOJos54aUAMrWgN9/IYkr0vyw0vkNgtqQA2seA2MnBpQAytaA1X19CRnJfmJ1tptrbUDrbXLltyxrbVV+0lyVZKn9v9/YZKDSb4vyfp0R2Fck+R/JNmc5OlJ7kiyrY9/UpJHpWu2PjrJriTf1m97RJI9SZ6YZFO6ju2Bibn+U5K/TnJmP/ZvJnnnIjmem6Ql+XyS65K8McmXLRJ7YpIvJHnGxHWXJ/muReJPSXe01ZYk25P8fpI/nNh+Sb8PHplkQ5KN/XUvWjBOS/KQ/v8XJ3nbxLaHJHlafz9PTfLhJK/pt61P8g9JfjXJ1iQnJHnixONx6Wquh7H8zK/LJJ9OdxTQ+v6xP6ff1+cutQb77W9P8qb+cb4+ybOWWGMbklS6P9zvSvKUJN+f5LNJviLJtnTvRry1v91D0x3x+7R+bfxkH7vpCPV1eF1MzPfb/Zr9qiT7kzy83/7LSf4qyUnpauTyJNcdZX8dXn8T161L8vF0jfRNff6fS3dkSZL8qySP7+/zuUn+OcmPLjbmkdbjgnX/piS39ftuXbqaWnT+I9yHN6V7zvmtJC/ur3tPunf6Lk3ywqXqaWKf/2O6J9+Tk3wkySuWWG8bMrGuxvATNaAGVrEGJm77miTvmvX6VwNqIKtYA+mOLtid7ij8A/PzzPonakANrF4N/ESS1y62H9WAGjieayDd+rm7XzdXpv+7fNbrXw2ogaxeDfx8kj9L8rYkN6c7qOcbl1yfsyiGiQfhMxPbHtU/CA+cuO7mJBcuMtZrkvzqxJ1/58S2LemeEObn+uckT5nYflq6XxY3HGHcbUm+pl9MD0zy3iR/tkgOb0730c86xv1xYZJbJy5fkuTlC2IuyYDG5RHm+LYkl/X/f0KSLy5yv7+kKNbKT+55kv65JP8t3bsM/ztLNJgm12B/eWe6xvMnkvzmUeY7tx93d5Jb+/X5I/22DyV5yUTsw+bXapKXJXnPxLZ16RrsT5q8HwvXxcR8Z07c9mNJnt///15PZklelKWfpG/v89+d5NeSPC7JNQviXprkjYuM8aNJ3nekNb3YesyXPkm/ZWLb0PnflO5J+olJPto/drvSvYgdfpI+wu0O19PEPv8PE5e/OckVS6y3MTcu1YAaWPEa6OOe1j/2D531+lcDaiCzqYGTk/xUksfPev2rATWQVaqBdH/UfjbJjiPdZzWgBnL818CD0h10tS7Jg9M1gBZdJ2pADeT4q4Hf6u/DD6RrPD+/339HPFhw/mdDZmvXxP/3Jt3HaBZcty1Jqupx6brgF6TrHm9Od8Ri0p0n6Nr5G7XW7qqqmyfGOSfJ+6pqbuK6Q+kak5+fTKi1tifJ383nV1U/lOQLVbW9tXbHfFxVvarP5cmtfwSWUlVb0r2r8ox0nfwk2V5V61trh/rL1x7xxlOqqgcmeW26j5hvT1fIt/abz0pydXM+zMW8Nd2Lx4Oz4JD4ZMk1mNba7uq+2f2/ZLrzGH7ZER6L05NcPXH56tzTRL/XttbaXFVdm+48cdO4YeL/d6WvrSyon0y3Br+6tfbZ+QtV9dwkp9e9TzOwPt2pFFJVD03yK+neFNiS7j59fMq8FzOZ5zlHm38xrbVL+48u/GySD7bW9lbV4e1L1NOR8rg63f68v1IDHTXQW4kaqKrHJ3lHkue01v7laLEzoAY6aqC3Uq8DrbVbqurN6T4SdsaIfjdTAx010FvmGnhNuoM0bjtaTjOmBjpqoLecNdBauyH3PAZXVtVPJvlgkn9/tBxXmRroqIHeMr8O7E1yVWvtd/vL7+o/sv/1Sf5osRzXHe0OjMw7krw/yVmttR3pzsk4vze/kO5w3iTd+QnSHZo879okz2yt7Zz4OaG1dq+m5SLmm5KH91V155Z8ZpKnt9ZuH3AffizduwWPa609IMm/nh/yCPMtdnkpr+xv86h+ju+ZGP/aJGdXd26ZhYbOc9xprV2d7pD9b053OPpCR1uDqaoL0x3W/s5077gci+vTPeHMOzvdKRV2LdxW3bPJWVnQfD8G96qffsyhrk1y5YIa295a++Z++xuSfCrJ+f26/Jnce90vdGcmTgRdVQ86Qszkml1q/qN5W7ra/JIX5hy9nuZN7q+z0z1O90tq4DA1cI9lrYGqeky6NfT9rbUPTZHbqlIDh6mBe6zk68CGdCelf8CU8StODRymBu6xnDXwlCSvqu6cd/PNg49W1XdNkeOqUAOHqYF7rOTrQMvIejJq4DA1cI/lrIHLcww9r1EVyRK2J7mltbavqh6bZPIF7r1JLqruy302pTskeHJH/kaSX6qqc5Kkuq9ff/aRJqmqx1XVw6o7Iewp6Yrtkvl3Bqvqpf3cT22t3XykMZa4D3uT7K7uy4F+YYrb7Ep3boIhc+xJcltVnZHuPDLzPpauIH+5qrZW1QlVNf/FCLuSnNnvv7XsB5L8m9banUfYtuga7E8++7Z0Tz7fl+SMqnrJMcz/ziT/uaoeXFXb0j1JvLt/F+o9Sb6lqp5SVRvTPbHsT/J/j2GeSe9J8tLqvjzqjCQ/dAxjfCzJHVX1U9Wd2Hh9VV1QVV/bb9+e7lD6PVX1lUlevOD2C9f5PyR5ZFVd2O/bi+/j/Efza+k+tvrhI2w7Wj3N+49VdWZf0z+b5N2LTdTfl839xc01zhN3qwE1MGnZaqCqLkh3epUfbq19YIq8ZkUNqIFJy1kD3zHxO+ap6Y66uKy1dssUOa4mNaAGJi3n70IPTXdeuQv7nyS5KMn7pshxNakBNTBpOV8HnlxV51TnrHRHLi56lNkMqQE1MGk5Xwfel+Sk6r4kaX1VPSddw/gjR0vu/tS4fEmSl1fVHenOafme+Q2ttU+m+2a6d6VrzO1JcmO6BZx0h7W+P8mf97f/63Sf/z+Sr0j3h9Ud6U4wuj/dyUnnvTJdB/mz1X3b056q+pn5jdV9u9V3LzL2a9KdL+CmPoc/neJ+vzbJc6r7dqZp3rH4xSRfne4krX+ciXdJWvdx9IvSnVz1mnQn231ev/kv032L1w1VddMU8xyXWmtXtNb+bpHNi67BdOcBuba19obW2v5070K8oqrOH5jC7+Wew/OvTLIv/bcuttY+3Y/7unRr6KIkF7XW7h44x0IvT7cWrkzyF+neCNh/1Fss0K+tZ6X7JfTKPr/fSbKjD/nxdC9qd6Q7IfLCJ7KLk7y5um9Ye27rPj768j6fz6Q7x8Z9mf9ot72ltfah1o54yodF62nCO5L8ebrzolyR7jwhi9mb7vkp6d5t27tUfqtNDaiBBZazBn4s3Qm9f3fi9fOTS+W32tSAGlhgOWvgjNzzO+Yn0n1Bz7cvld9qUwNqYIFlq4HW2o2ttRvmf/qrb2qtjer3ITWgBhZYzteBx6RrsN3Z//uJJEt96/OqUwNqYIHlfB24Jcm3ptsXtyX56STPbq0dtQdVR87r/q3vyu9OdwjulTNOB+5XqurF6U5S/I2zzmXsquqqdF+e9RezzoXlowampwaOT2pgemrg+KQGpqcGjk9qYHpq4PikBqa3GjVwfzri8qiq6qKq2lJVW5O8Ot27F1fNNisYv6o6raq+vrqPrj0s3VFRY/vIDqwYNcBapwZY69QAa50aYK1TA+M2628VX07PTnc4caX7VvDnL3KYK3Bvm5L8Zrpvjtud7pQLvz7LhGCVqQHWOjXAWqcGWOvUAGudGhix4/Kj4gAAAADA/dtx81FxAAAAAOD4Meij4lU19eGZ6+qEQYmcmK1Tx56wbv2gsaumjx16AOqQ8PUD8kiSnZsOTB17wuZBX3iV/Xdvmjr2tgGxSbLrwI03tdZOHXSj+4khNcDqOnn9l886hcNuOaQG1pZxnHXlK7dN/zq60j6157bjuAbWt3W1cdZpZK4dnHUKI3Ro1glMOo5rwOvAQhvXbZ91CkmSR566b9YpHPb3uw6ogTVkx7pxPNTnnXfbrFM47P995m41wKo7aUR/E9+6jH8TH8NfW9M1DbduPnfQqI+oJ0wd+/Atw3452DjguNIDc4OGzt1z09fsSZuGdS4vOvuGqWO/8sGfGzT2ldeeNXXs/7rmzEFj//fPv+7qQTe43xnWOGd1PPMBz591Coe9/dZfUwMrbuA7QStow/qTZ51CkuSNX/3YWadw2BM+/MHjtgbW1cacuOmcWaeRfQdumnUKo3Nobjx/sCaHjtsa6IzhdWA8HrTl8bNOIUnyV9/9qVmncNiOX7lWDawhT9r6vFmnkCR57+vfP+sUDtv4TdeoAVbd07eNoxaT5N23LV9fyEfFAQAAAIDR0bgEAAAAAEZH4xIAAAAAGB2NSwAAAABgdDQuAQAAAIDR0bgEAAAAAEZH4xIAAAAAGB2NSwAAAABgdDQuAQAAAIDR2TAk+IR1J+XBJz5lqtiT53YOSmTn+s1Txx6YGzR01tX0sSdvaoPGPmnz9Mmct23PoLEftPOWqWN37fryQWNfftP08Z++fdg+AQAAAID7yhGXAAAAAMDoaFwCAAAAAKOjcQkAAAAAjI7GJQAAAAAwOhqXAAAAAMDoaFwCAAAAAKOjcQkAAAAAjI7GJQAAAAAwOhqXAAAAAMDoaFwCAAAAAKOjcQkAAAAAjM6GIcE71m/Ms3aeNlXs/kM1KJFde9vUsTfffXDQ2A/cPP3dPO3EYWOfufWuqWPP2nHroLEPHpw+75v2bB809s5Nd08d+5iTBy2T/NEdg8IBAAAA4Es44hIAAAAAGB2NSwAAAABgdDQuAQAAAIDR0bgEAAAAAEZH4xIAAAAAGB2NSwAAAABgdDQuAQAAAIDR0bgEAAAAAEZH4xIAAAAAGB2NSwAAAABgdDYMCd68fi4P2b53qtib928alMieg9Onsm9uWL/1AcNSGeRzd2ydOvbCs68cNPaGDQenjj39jOsHjX3qd1w3dez+Rz1h0NgXnz8onPu55+14yaxTSJL8+mfH8z7M20+ZdQZrQZt1Aof91OnPnXUKSZKvveTxs07hHus+OOsMVsxcO5T9B2+ZdRo5NHfbrFMYnYNzb551CodtWPc9s05hhdWsE8iYXgdefOo4fvnd+uoXzDqFe/zK8V4DTPro3MdnnUKSpJ72ylmnMEENrCXve8zzZ51CkuSijz9u1ikc9u51r1u2scbzlz4AAAAAQE/jEgAAAAAYHY1LAAAAAGB0NC4BAAAAgNHRuAQAAAAARkfjEgAAAAAYHY1LAAAAAGB0NC4BAAAAgNHRuAQAAAAARkfjEgAAAAAYHY1LAAAAAGB0NgwJbi3Zd2j9VLH7Dg3riZ524tzUsRfsPDho7DO23DV17E37Thg09mVf3Dx17P5PPHrQ2L998+VTx/7h15w5aOy3/NgTp4798Su+btDYyR8PjAcAAACAe3PEJQAAAAAwOhqXAAAAAMDoaFwCAAAAAKOjcQkAAAAAjI7GJQAAAAAwOhqXAAAAAMDoaFwCAAAAAKOjcQkAAAAAjI7GJQAAAAAwOhqXAAAAAMDobBgSfGBuXb6wd9NUsSesnxuUyGNO2T117MNOu27Q2AcOTn83P/S58weNfc2+fVPHXr+vBo39mHUXTB373I9fMWjsv/7OD08d2z7w3kFjAwAAAMB95YhLAAAAAGB0NC4BAAAAgNHRuAQAAAAARkfjEgAAAAAYHY1LAAAAAGB0NC4BAAAAgNHRuAQAAAAARkfjEgAAAAAYHY1LAAAAAGB0NC4BAAAAgNHRuAQAAAAARmfDkOA7D7X87S0Hpoo9f9umQYk8uk0fu3ffCYPGvvH2HVPH3rRv46CxN9f0seduGbZPfn/PX0wd+9aHXzho7B9//8Omjn3jY39j0NisvO0nnD/rFA576ml7Z51CkmTrSU+adQqsog3rT5l1CoftOzTghWAF7b/4R2edAmvUudu+adYpJEnu3P33s05hDRnwi/sa8Cc3TPf30Uq7/ey/mXUKMFN+F2Ktm/vQy2adwopwxCUAAAAAMDoalwAAAADA6GhcAgAAAACjo3EJAAAAAIyOxiUAAAAAMDoalwAAAADA6GhcAgAAAACjo3EJAAAAAIyOxiUAAAAAMDoalwAAAADA6GwYEnyozeX2tm+q2Lm2aVAiN9y1derYa/ZsHzT2jfs2Th2752ANGvv8bdPfzx+84NODxv7l8w5NHbvjwvcOGvuZjzhn6ti24SGDxk7+aWA8AAAAANybIy4BAAAAgNHRuAQAAAAARkfjEgAAAAAYHY1LAAAAAGB0NC4BAAAAgNHRuAQAAAAARkfjEgAAAAAYHY1LAAAAAGB0NC4BAAAAgNHRuAQAAAAARkfjEgAAAAAYnQ1DgresX59Hb33AVLGP2HH3oEQ2rpubOvazd2weNPYX99fUsSeuHzR0Ng5o/f7NdecMGvvAwekfnnPu3jho7O2fv3Hq2P27tw8aGwAAAADuK0dcAgAAAACjo3EJAAAAAIyOxiUAAAAAMDoalwAAAADA6GhcAgAAAACjo3EJAAAAAIyOxiUAAAAAMDoalwAAAADA6GhcAgAAAACjo3EJAAAAAIzOhiHB6yrZvnG62BM3HByUyL5D66eOvetQDRy7TR07IDRJcuL66XO5/cCg3Z3b922ZOvbQgSkfmN7Bu06YOnbfbdsHjc3Ku2PfZ2adwmE/+Klx5PLS7ZfPOoU1Yl2qpn/+WCkHD9086xQOe+2ud846hSTJa39p1hmsFQdz8NCts05iVP7+Rf846xQ67aGzzoA16tK9vzfrFJIkl1436wxYq26882OzTiFJ8g2v+q5ZpzDhrbNOgFX07Ze9a9YpJEm2Puu8WaewIhxxCQAAAACMjsYlAAAAADA6GpcAAAAAwOhoXAIAAAAAo6NxCQAAAACMjsYlAAAAADA6GpcAAAAAwOhoXAIAAAAAo6NxCQAAAACMjsYlAAAAADA6GpcAAAAAwOhsGBTdkkNtutB9h9YPG7rV1LFnbDk0aOyTN03fn50bNHJyyqYDU8fuHBCbJDfdtWXq2CuuOmfQ2KfcsnPq2KopH3QAAAAAWCaOuAQAAAAARkfjEgAAAAAYHY1LAAAAAGB0NC4BAAAAgNHRuAQAAAAARkfjEgAAAAAYHY1LAAAAAGB0NC4BAAAAgNHRuAQAAAAARkfjEgAAAAAYnQ1DgluSA3PTxe49uH5QIts3Hpw69mtPvWXQ2Ns275s6dvfeLYPGnms1deyeuzcNGvuqO7dOHXvlnuljk+TBt++YOvaRp183aGwAAAAAuK8ccQkAAAAAjI7GJQAAAAAwOhqXAAAAAMDoaFwCAAAAAKOjcQkAAAAAjI7GJQAAAAAwOhqXAAAAAMDoaFwCAAAAAKOjcQkAAAAAjI7GJQAAAAAwOhqXAAAAAMDoVGtt+uCqLya5euXS4ThxTmvt1FknsRLUAFNSA6x1aoC1Tg2w1qkB1jo1wFq3bDUwqHEJAAAAALAafFQcAAAAABgdjUsAAAAAYHQ0LgEAAACA0dG4BAAAAABGR+MSAAAAABgdjUsAAAAAYHQ0LgEAAACA0dG4BAAAAABGR+MSAAAAABid/w+x8wpQpD/Q5AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 7 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "image = 52                                              # selected prediction case image from 0 - 99\n",
    "visualize_max_pooling_feature_maps(model, image)        # function to visualize the max pooling feature maps"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "58f4xmgS6ui8"
   },
   "source": [
    "\n",
    "#### Visualize the Output Layer\n",
    "\n",
    "Let's visualize the output layer which contains the probability to be each categories (e.g., random or smooth)\n",
    "\n",
    "* you can specify the image below from 0 - 99"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 222
    },
    "executionInfo": {
     "elapsed": 456,
     "status": "ok",
     "timestamp": 1621130868139,
     "user": {
      "displayName": "HONGGEUN JO",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjjMrjKxVvTiBoV4qCmbZQiE5mDJaodEzKxwowf=s64",
      "userId": "13788572619033134064"
     },
     "user_tz": 300
    },
    "id": "H808m7u-6nK-",
    "outputId": "b6310f05-53af-4c99-a8bc-63d7eba1d79d"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "image = 52                                              # selected prediction case image from 0 - 99\n",
    "visualize_last_layers(model, image)                     # function to visualize the output layer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "a1Mas1bP1Fof"
   },
   "source": [
    "#### Other Convolutional Neural Network Architecture Examples\n",
    "\n",
    "Some other examples of layers that could be added to the above CNN\n",
    "\n",
    "1. More dense layers, ANN feed forward\n",
    "\n",
    "```python\n",
    "    model.add(layers.Dense(512))\n",
    "    model.add(layers.BatchNormalization(momentum=0.8))\n",
    "    model.add(layers.ReLU())\n",
    "    model.add(layers.Dropout(0.25))\n",
    "```\n",
    "\n",
    "2. Max pooling 2D layers\n",
    "\n",
    "```python\n",
    "    model.add(layers.MaxPooling2D((2, 2)))\n",
    "```\n",
    "\n",
    "#### Visualize the Testing Images and Predicted Classification Probabilities\n",
    "\n",
    "Let's look at all the testing images and the predicted classification probabilities from our our trained CNN.\n",
    "\n",
    "* we report the true label, and then the greatest category probability, > 50% (argmax), and the associated category from our CNN \n",
    "\n",
    "* for example, 'random, 64% random' indicates a true label of random (first random) and the random (second random) category got the largest predicted probability and that probability was 64%. Given an argmax assignment, this is a correct prediction."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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3pz9o5GSq/YL/uXl5uznn9fpqv2vx+4zZ9953zNctY856n3mbPPyva7ajY8ZNmfH1x3mqq2LfPG5YKRSr3s7V5qyrzvlJlftW755ljn7uOX2x12S/vv6E8zZofHgqt1WWuzKe3SP2PevOwajq/bWutvN2b7RHeZsJfq2lblgtBq0baBgynaNVF212+ptdSXp1CW+db+oftyc3d9pPxeQpDv62szZ8472Hde67ltlzn7k1V921S5t6jVnH3PrUa7auscXnwvaCvV60uJlpuwj2vtdtdtLI+Zs/6jv3PvXnSvM2au7XC2Hesbsy91Y8C13W719/3rKmm2u2secc5U5e9beVlftd77fFZfEFU0AAAAAQGI0mgAAAACApGg0AQAAAABJ0WgCAAAAAJKi0QQAAAAAJEWjCQAAAABIikYTAAAAAJAUjSYAAAAAICkaTQAAAABAUjSaAAAAAICkaDQBAAAAAEnRaAIAAAAAkqLRBAAAAAAkRaMJAAAAAEiq6AkPxG5dNfQ5U3Z185me0mquPMIerqu6an/1nz9lzj7zuJe7an/3om+bs0Nbtrtq9+1dbM6W2wZctdVs31RHVx3jq61rnflDrxqD+kYbTNnf3r/BVfue/iZz9iedFVftewt3mLOHjW901d432mHOjsfoql11xHdVhly1PU9fdtRvMmf3jHXbC88RY1Wpe8T24N06vstVu7HSaM4es6jFVfuY9n3m7LbBpa7aV+4J5mzn8HJX7e5h+zpfvXuVq7bH7gHf470QrFm9R+95y4WmbBz21a72247lkrT9muNcta/+1anmbJ19qEmSnrTSfh7YXBx11R6r2g9su3vbXbUP39tqzpaf0uyqrff74hJXNAEAAAAAidFoAgAAAACSotEEAAAAACRFowkAAAAASIpGEwAAAACQFI0mAAAAACApGk0AAAAAQFI0mgAAAACApGg0AQAAAABJ0WgCAAAAAJKi0QQAAAAAJEWjCQAAAABIikYTAAAAAJAUjSYAAAAAICkaTQAAAABAUkVfPCiEelPyiOqRrsrHd9izpUUDrtqPfevzzNlvPfNqV+2Tn32GOXvd13/mqr2n51HmbKXi29Q233yVOVtaeoer9kLQVBrRyevvNWWbW/tdtTftWG3OjlXXu2qPddnz2+t2u2pvG6mas/vV7apdCk3m7EDw1W4Ki83ZR4VjzNnL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\n",
      "text/plain": [
       "<Figure size 720x720 with 20 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_testing_predictions(model)                    # visualize testing images and probability for correct category"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Summarize the Performance of our Image Classification CNN\n",
    "\n",
    "Let's summarize the performance of our CNN over all training and testing images \n",
    "\n",
    "* we use boxplots to report the training and testing images prediction probabilities \n",
    "\n",
    "* we show the predicted probability of artifact image\n",
    "\n",
    "* an accurate model has all low probabilities for random images and all high probabilities for artifact images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "testing_boxplot(model)                                  # visualize the prediction probability box plots by correct category"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "juCdblHCXJb_"
   },
   "source": [
    "#### Comments\n",
    "\n",
    "This was a very simple convolutional neural network workflow to support experiential learning with fast experientation.  \n",
    "\n",
    "The Texas Center for Data Analytics and Geostatistics has many other demonstrations on the basics of working with DataFrames, ndarrays, univariate statistics, plotting data, declustering, data transformations, trend modeling and many other workflows available [here](https://github.com/GeostatsGuy/PythonNumericalDemos), along with a package for geostatistics in Python called [GeostatsPy](https://github.com/GeostatsGuy/GeostatsPy). \n",
    "  \n",
    "We hope this was helpful,\n",
    "\n",
    "*Michael* and *Honggeun*\n",
    "\n",
    "***\n",
    "\n",
    "#### More on Michael Pyrcz and the Texas Center for Data Analytics and Geostatistics:\n",
    "\n",
    "### Michael Pyrcz, Associate Professor, University of Texas at Austin \n",
    "*Novel Data Analytics, Geostatistics and Machine Learning Subsurface Solutions*\n",
    "\n",
    "With over 17 years of experience in subsurface consulting, research and development, Michael has returned to academia driven by his passion for teaching and enthusiasm for enhancing engineers' and geoscientists' impact in subsurface resource development. \n",
    "\n",
    "For more about Michael check out these links:\n",
    "\n",
    "#### [Twitter](https://twitter.com/geostatsguy) | [GitHub](https://github.com/GeostatsGuy) | [Website](http://michaelpyrcz.com) | [GoogleScholar](https://scholar.google.com/citations?user=QVZ20eQAAAAJ&hl=en&oi=ao) | [Book](https://www.amazon.com/Geostatistical-Reservoir-Modeling-Michael-Pyrcz/dp/0199731446) | [YouTube](https://www.youtube.com/channel/UCLqEr-xV-ceHdXXXrTId5ig)  | [LinkedIn](https://www.linkedin.com/in/michael-pyrcz-61a648a1)\n",
    "\n",
    "#### Want to Work Together?\n",
    "\n",
    "I hope this content is helpful to those that want to learn more about subsurface modeling, data analytics and machine learning. Students and working professionals are welcome to participate.\n",
    "\n",
    "* Want to invite me to visit your company for training, mentoring, project review, workflow design and / or consulting? I'd be happy to drop by and work with you! \n",
    "\n",
    "* Interested in partnering, supporting my graduate student research or my Subsurface Data Analytics and Machine Learning consortium (co-PIs including Profs. Foster, Torres-Verdin and van Oort)? My research combines data analytics, stochastic modeling and machine learning theory with practice to develop novel methods and workflows to add value. We are solving challenging subsurface problems!\n",
    "\n",
    "* I can be reached at mpyrcz@austin.utexas.edu.\n",
    "\n",
    "I'm always happy to discuss,\n",
    "\n",
    "*Michael*\n",
    "\n",
    "Michael Pyrcz, Ph.D., P.Eng. Associate Professor The Hildebrand Department of Petroleum and Geosystems Engineering, Bureau of Economic Geology, The Jackson School of Geosciences, The University of Texas at Austin\n",
    "\n",
    "#### More Resources Available at: [Twitter](https://twitter.com/geostatsguy) | [GitHub](https://github.com/GeostatsGuy) | [Website](http://michaelpyrcz.com) | [GoogleScholar](https://scholar.google.com/citations?user=QVZ20eQAAAAJ&hl=en&oi=ao) | [Book](https://www.amazon.com/Geostatistical-Reservoir-Modeling-Michael-Pyrcz/dp/0199731446) | [YouTube](https://www.youtube.com/channel/UCLqEr-xV-ceHdXXXrTId5ig)  | [LinkedIn](https://www.linkedin.com/in/michael-pyrcz-61a648a1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "SubsurfaceDataAnalytics_ConvolutionalNeuralNetworks_Classfier_VerySimple_HJ_review.ipynb",
   "provenance": [],
   "toc_visible": true
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
